/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package logica;

import com.itextpdf.text.pdf.parser.PdfImageObject;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import ocr.Ocr;

/**
 *
 * @author jenkin90
 */
public class ImpresoRaiaImpl implements ImpresoRaia {

    private List<PdfImageObject> caras = new ArrayList<PdfImageObject>();
    //private static Integer numero=0;
    private static Ocr reconocedor=new Ocr();

    public ImpresoRaiaImpl(PdfImageObject imagen) throws IOException {
        caras.add(imagen);
        BufferedImage recorte = imagen.getBufferedImage().getSubimage(1050, 775, 500, 100);
        String numero=reconocedor.doOcr(recorte);

        ImageIO.write(recorte, "png", new File("D:/"+numero+".png"));

    }

    public List<PdfImageObject> getCaras() {
        return caras;
    }

    public void setCaras(List<PdfImageObject> caras) {
        this.caras = caras;
    }

    

    @Override
    public Boolean add(PdfImageObject cara) {
        return this.caras.add(cara);
    }

    public static Boolean esImpreso(PdfImageObject imagen) {
        Boolean resultado = false;
        BufferedImage img;
        Integer color;
        Integer blancos = 0;
        Double proporcion = 0.0;
        try {
            img = imagen.getBufferedImage().getSubimage(850, 150, 800, 300);
            for (int i = 0; i < 800; i++) {
                for (int j = 0; j < 300; j++) {
                    color = img.getRGB(i, j);
                    if (color == -1) {
                        blancos++;
                    }
                }
            }

            proporcion = new Double(blancos) / (800 * 300);

        } catch (IOException ex) {
            Logger.getLogger(ImpresoRaiaImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        if (proporcion > 0.62 && proporcion < 0.64) {
            resultado = true;
        }

        return resultado;
    }
}
